C++入门教程,C++基础教程(非常详细)

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2020-12-14



C++ 读作“C加加”,是“C Plus Plus”的简称。顾名思义,C++ 是在C语言的基础上增加新特性,玩出了新花样,所以叫“C Plus Plus”,就像 iPhone 7S 和 iPhone 7、Win10 和 Win7 的关系。


从语法上看,C语言是 C++ 的一部分,C语言代码几乎不用修改就能够以 C++ 的方式编译,这给很多初学者带来了不小的困惑,学习 C++ 之前到底要不要先学习C语言呢?

我对这个问题保持中立,但是初学者直接学习 C++ 会非常吃力,Hold 不住,尤其是对计算机内存不太理解的情况下,C++ 是学不懂的。C++ 是一门灵活多变、特性丰富的语言,同时也意味着比较复杂,不易掌握。

不过可以明确地说:学了C语言就相当于学了 C++ 的一半,从C语言转向 C++ 时,不需要再从头开始,接着C语言往下学就可以,所以我强烈建议先学C语言再学 C++。

301楼
WD小旺仔 2020-12-17
在类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制。
302楼
WD小旺仔 2020-12-17
在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象只能访问 public 属性的成员,不能访问 private、protected 属性的成员。
303楼
WD小旺仔 2020-12-17
下面通过一个 Student 类来演示成员的访问权限:
#include
using namespace std;
//类的声明
class Student{
private: //私有的
char *m_name;
int m_age;
float m_score;
public: //共有的
void setname(char *name);
void setage(int age);
void setscore(float score);
void show();
};
//成员函数的定义
void Student::setname(char *name){
m_name = name;
}
void Student::setage(int age){
m_age = age;
}
void Student::setscore(float score){
m_score = score;
}
void Student::show(){
cout setname("李华");
pstu -> setage(16);
pstu -> setscore(96);
pstu -> show();
return 0;
}
304楼
WD小旺仔 2020-12-17
运行结果:
小明的年龄是15,成绩是92.5
李华的年龄是16,成绩是96
305楼
WD小旺仔 2020-12-17
类的声明和成员函数的定义都是类定义的一部分,在实际开发中,我们通常将类的声明放在头文件中,而将成员函数的定义放在源文件中。
306楼
WD小旺仔 2020-12-17
类中的成员变量 m_name、m_age 和m_ score 被设置成 private 属性,在类的外部不能通过对象访问。也就是说,私有成员变量和成员函数只能在类内部使用,在类外都是无效的。
307楼
WD小旺仔 2020-12-17
成员函数 setname()、setage() 和 setscore() 被设置为 public 属性,是公有的,可以通过对象访问。
308楼
WD小旺仔 2020-12-17
private 后面的成员都是私有的,直到有 public 出现才会变成共有的;public 之后再无其他限定符,所以 public 后面的成员都是共有的。
309楼
WD小旺仔 2020-12-17
成员变量大都以m_开头,这是约定成俗的写法,不是语法规定的内容。以m_开头既可以一眼看出这是成员变量,又可以和成员函数中的形参名字区分开。
310楼
WD小旺仔 2020-12-17
以 setname() 为例,如果将成员变量m_name的名字修改为name,那么 setname() 的形参就不能再叫name了,得换成诸如name1、_name这样没有明显含义的名字,否则name=name;这样的语句就是给形参name赋值,而不是给成员变量name赋值。

评论

登录后才可发表内容
  • 主题

    10

  • 帖子

    2187

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0415s Mem:2117Kb