参考:
《Python编程:从入门到实践》
《C++ Primer》第五版


文章目录

  • class
  • 一、创建类
  • Python
  • self的解释
  • 注意
  • Cpp
  • 二、创建实例
  • Python
  • Cpp
  • 运算符
  • 三目运算符
  • Python
  • C++
  • 容器
  • 一、容器定义
  • python
  • C++
  • 二、应用
  • python
  • C++
  • C++中的::
  • 一、在类外定义类内函数
  • 二、友元是类中成员函数的时候
  • 三、类的继承中访问父子类的同名变量或者函数
  • 四、容器中的迭代器
  • 五、纯虚析构
  • 六、文件操作的程序中好像也有
  • 七、访问命名空间中的名字


class

一、创建类

Python
class Dog()
	def _init_(self,name,age)
    	self.name = name
        self.age = age
    def sit(self)
    	print(self.name.init() + "is now sitting")
    def roll_over(self)
    	print(self.name.init() + "rolled over")

变化过程:实参(年龄、名字)→形参(name、age)→变量(self.name、self.age)

self的解释

1、self会自动传入实参,位于所有的参数的最前面(所以只用提供后面的值)

2、一个指向实例本身的引用,能让实例访问类中的属性和方法

注意

类的名称第一个字母大写,括号内为空;变量的名称的首字母一般小写

1、_init_()方法开头结尾有 _ ,可以避免发生名称冲突

2、Python自动运行init方法

Cpp
class Dog
{
	public:
		sit()
		{
			cout<<name<<"is now sitting"<<endl;//name可以换成this->name
		}
		roll over()
		{
			cout<<name<<"rolled over"<<endl;//name可以换成this->name
		}
	public:
		string name;//默认是私有权限
		int age;
}

二、创建实例

Python
# 创建实例
my_dog = Dog('whillie',6)
# 调用属性
print("My dog's name is" + my_dog.name.title() + ".") # title:让首字母变大写
print("My dog is" + str(my_dog.age) + "years old")
# 调用方法
my_dog.sit()
my_dog.roll_over()
Cpp
// 创建实例
Dog my_dog;
my_dog.name = "whillie" ;
my_dog.age = 6;
//调用属性
cout<<"My dog's name is" <<my_dog.name<<"."<<endl;
cout<<"My dog is"<<my_dog.age<<"years old"<<endl;
//调用行为
my_dog.sit();
my_dog.roll_over();

运算符

三目运算符

Python
exp1 if condition else exp2

condition :判断条件
exp1 和 exp2 是两个表达式
如果 condition 成立(结果为真),就执行 exp1,否则就执行 exp2

C++
condition ? exp1 : exp2

condition是表达式的条件,成立时(True)执行exp1,否则执行exp2

容器

一、容器定义

python
list[ parameter 1 : parameter 2 :parameter 3 ]

parameter 1:是开始索引的下标,可以省略(默认0)

parameter 2:结束索引的下标,可以省略(默认为最大值,但是不包括最大值)

parameter 3:步长(一般直接省略值和前面的:,默认为1)

C++
vector<type> v1;

type:是定义的容器里面的数值的类型

二、应用

python

切片:

list = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
# 以下为例子
list[1] = 1
# 注意这里正着索引,第一个是0;当反过来索引时候,第一个是1
list[-1] = 9
list[1:] = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list[:5] = [0, 1, 2, 3, 4]
list[::-1] = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

C++

常用函数:

v1.begin();//开始元素的地址
v1.end();//结束元素的地址
v1.push_back(element);//从尾部插入一个元素
v1.pop_back(element);//从尾部删除一个元素
v1.empty();//bool值
v1.size();//返回元素个数
v1.capacity();//容器的容量
v1.front();//返回容器第一个元素
v1.end();//返回容器最后一个元素
v1.reserve(int len);//预留容器位置
v1[i];//下标索引容器中的值

C++中的::

一、在类外定义类内函数

1、先定义一个类中的函数

class Building
{
  public:
      (函数返回值) Building(); //重名可析构
};

2、在类外定义类内函数

(函数返回值)  Building::Building()
{
    ...
}
二、友元是类中成员函数的时候

1、在类中定义一个函数

class goodgay
{
    public:
        void visit();
};

2、在另一个类中定义友元是类中的成员数(友元也可以是全局函数和类)

class building
{
    friend void goodgay::visit();
};
三、类的继承中访问父子类的同名变量或者函数

1、定义父子类的同名变量

class base
{
    public:
        int m_a
};
class son::public base
{
    public:
    	int m_a
};

2、分别访问子类和父类中的变量方式

//方式一 对象访问
son s; //先定义一个对象
s.m_a = 20; //未说明是子类中变量
s.base::m_a = 30; //如果是父类标上base::
//方式二 类名访问
son::m_a = 20;
son::base::m_a = 20;
四、容器中的迭代器

1、容器迭代器的定义

vector<int>::iterator //其中是<>里的类型是(*it)解出来的数据类型

2、举例 打印容器内容函数

void printVector(vector<int>& v)
{
    for(vector<int>::iterator it = v.begin();it != v.end();it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}
五、纯虚析构

因为用的不咋多所以在此不再详细说明

python里面类 C函数指针 python c++类_c++

六、文件操作的程序中好像也有
七、访问命名空间中的名字
std::cout