版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42528266/article/details/102751176
有个默认的全局命名空间,我们创建的命名空间默认都嵌套在它里面
继承,可以让子类拥有父类的所有成员(变量\函数)
#include <iostream>
using namespace std;
//struct Person {
// int m_age;
// void run() {
// cout << "run()" << endl;
// }
//};
//
//struct Student : Person {
// int m_score;
// void study() {
// cout << "study()" << endl;
// }
//};
//
//struct Worker : Person {
// int m_salary;
// void work() {
// cout << "work()" << endl;
// }
//};
// Java:所有的Java对象最终都继承自java.lang.Object这个类
// OC:所有的OC对象最终都继承自NSObject这个类
void test() {
/*Student student;
student.m_age = 18;
student.m_score = 100;
student.run();
student.study();*/
}
struct Person {
int m_age;
};
struct Student : Person {
int m_no;
};
struct GoodStudent : Student {
int m_money;
};
int main() {
// 12
GoodStudent gs;
gs.m_age = 20;
gs.m_no = 1;
gs.m_money = 2000;
cout << &gs << endl;
cout << &gs.m_age << endl;
cout << &gs.m_no << endl;
cout << &gs.m_money << endl;
// 4
Person person;
// 8
Student stu;
cout << sizeof(Person) << endl;
cout << sizeof(Student) << endl;
cout << sizeof(GoodStudent) << endl;
getchar();
return 0;
}
#include <iostream>
using namespace std;
//class Person {
//public:
// int m_age;
// void run() {
//
// }
//};
//
//class Student : public Person {
// int m_no;
// void study() {
// m_age = 10;
// }
//};
//
//class GoodStudent : public Student {
// int m_money;
// void work() {
// m_age = 10;
// }
//};
class Person {
private:
int m_age;
public:
int m_no;
};
int main() {
Person person;
person.m_no = 20;
getchar();
return 0;
}
#include <iostream>
using namespace std;
int myAge() {
cout << "myAge()" << endl;
return 30;
}
int myHeight() {
cout << "myHeight()" << endl;
return 180;
}
//struct Person {
// int m_age;
// int m_height;
//
// Person() {
// this->m_age = 0;
// this->m_height = 0;
// }
//
// // 初始化列表 :m_age(age), m_height(height)
// /*Person(int age, int height) :m_height(height), m_age(m_height) {
//
// }*/
// Person(int age, int height) :m_height(myHeight()), m_age(myAge()) {
//
// }
//
// void display() {
// cout << "m_age is " << this->m_age << endl;
// cout << "m_height is " << this->m_height << endl;
// }
//};
struct Person {
int m_age;
int m_height;
//Person() :Person(0, 0) {
// cout << "Person() " << this << endl;
// // 直接调用构造函数,会创建一个临时对象,传入一个临时的地址值给this指针
// // Person(0, 0);
//}
Person() :Person(0, 0) { }
Person(int age, int height) :m_age(age), m_height(height) { }
/*Person(int age, int height) {
cout << "Person(int age, int height) " << this << endl;
this->m_age = age;
this->m_height = height;
}*/
void display() {
cout << "m_age is " << this->m_age << endl;
cout << "m_height is " << this->m_height << endl;
}
};
int main() {
Person person;
// person.Person();
person.display();
/*Person person2(10, 20);
person2.display();*/
/*Person person1;
person1.display();
cout << "-----------------" << endl;*/
getchar();
return 0;
}
#include <iostream>
using namespace std;
class Person {
int m_age;
int m_height;
public:
/*Person() :Person(0, 0) {
}
Person(int age) :Person(age, 0) {
}*/
// 默认参数只能写在函数的声明中
Person(int age = 0, int height = 0);
};
// 构造函数的初始化列表只能写在实现中
Person::Person(int age, int height) :m_age(age), m_height(height) {
}
int main() {
Person person;
Person person2(10);
Person person3(20, 180);
getchar();
return 0;
}