Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

チュートリアル的な記述5

クラス、構造体

// class デフォルトのアクセス指定子がprivate
// struct デフォルトのアクセウ指定子がpublic

struct Animal;
struct Man2;

struct Animal {
    int age = 10;
    virtual void attack();
};

struct Man2 : Animal {
    typedef std:: shared_ptr<std::string> string_ptr;
    string_ptr name_ptr;
    Man2(std::string name);
    ~Man2();
    static void staticFunc();
    void hello();
    void func1() &; //
    void func1() &&; // 右辺値参照の際
    void constFunction() const;
};


Man2::Man2(std::string name) {
    this->name_ptr = std::make_shared<std::string>(name);
}

Man2::~Man2() {
    
}

void Man2::staticFunc() {
    std::cout << "staticFunc" << std::endl;
}

void Man2::hello() {
    std::cout << "hello" << std::endl;
}

void Man2::func1() & {
    std::cout << "func1 &" << std::endl;
}
    
void Man2::func1() && {
    std::cout << "func1 &&" << std::endl;
}
    
void Man2::Animal::attack() {
    std::cout << "attack" << std::endl;
}

void useMan2() {
    auto man2 = new Man2("aaa");
    int a = man2->age;
    Man2::staticFunc();
    man2->staticFunc();
    man2->hello();
    man2->func1();
    Man2("cddd").func1();
}