以前没怎么关注过这个点,记录一下
http://blog.youkuaiyun.com/ucasliyang/article/details/52691619
在做一个小的程序题的时候,看到了struct中定义了函数,之前没有看到过,所以查了一点相关的知识,在这里记录一下:
c++中允许在结构体当中定义函数,它的用法和类的用法很像,不过与类有一个区别在于,struct中定义的函数和变量都是默认为public的,但class中的则是默认为private。
- #include<iostream>
- #include<string>
-
- struct Person
- {
- Person(std::string name);
- std::string greet(std::string other_name);
- std::string m_name;
- };
-
- Person::Person(std::string name)
- {
- m_name = name;
- }
-
- std::string Person::greet(std::string other_name)
- {
- return "Hi " + other_name + ", my name is " + m_name;
- }
-
- int main()
- {
- Person m_person("JANE");
- std::string str = m_person.greet("JOE");
- std::cout<<str<<std::endl;
- }
http://blog.youkuaiyun.com/devil_2009/article/details/6871324
原来C++中struct也有构造函数与析构函数,也可以有访问类型控制,可以用private关键字。如下所示:
- <span style="font-size:16px;"><strong>#include<iostream>
- #include<ostream>
- struct point
- {
- public:
- point():x_(0.0),y_(0.0)
- {
- std::cout<<"default constructor\n";
- }
- point(double x,double y):x_(x),y_(y)
- {
- std::cout<<"constructor("<<x<<", "<<y<<")\n";
- }
- ~point()
- {
- std::cout<<"default destructor\n";
- }
-
- double get_x()
- {
- return x_;
- }
-
- double get_y()
- {
- return y_;
- }
-
- private:
- double x_;
- double y_;
- };
- int main()
- {
- point pt;
- std::cout<<pt.get_x()<<"\n";
- std::cout<<pt.get_y()<<"\n";
- } </strong></span>
输出结果为:
- <strong>default constructor
- 0
- 0
- default destructor</strong>
看来真像某些人说的,struct与class是小异大同。struct默认访问权限是public,class是private;class有继承,多态机制,而struct没有。